#ifndef GAME_CAMERA_H_
#define GAME_CAMERA_H_

#include "stdafx.h"
#include "game_camera_desc.h"

namespace rpg {

	class GameCamera : public LevelObject {
	public:
		GameCamera(const GameCameraDesc &gameCameraDesc);

		CameraView getCameraView(void) const;
		void setCameraView(CameraView cameraView);
		LevelObject * getTargetObject(void);
		void setTargetObject(LevelObject * targetObject);
		Ogre::Camera * getOgreCamera(void);
		void setOgreCamera(Ogre::Camera *ogreCamera);
		Ogre::Real getDistanceToTarget(void) const;
		void setDistanceToTarget(Ogre::Real distanceToTarget);

		void update(float deltaTime);
	private:
		LevelObject *mTargetObject;
		Ogre::Camera *mCamera;
		CameraView mCameraView;
		Ogre::Vector3 mCameraTarget;
		Ogre::Vector3 mCameraEye;
		Ogre::Real mDistanceToTarget;
	};

}

#endif /* RPG_CAMERA_H_ */
